package cn.com.enboga.musicbox.model
{
	import flash.events.EventDispatcher;
	import flash.filesystem.File;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundLoaderContext;
	import flash.media.SoundTransform;
	import flash.utils.Timer;
	
	import mx.collections.ArrayCollection;
	
	[Bindable]
	public class ModelLocator extends EventDispatcher{
		/** 播放的音乐 */
		public var _sound:Sound;
		
		/** 播放的控制音乐对象 */
		public var _soundChang:SoundChannel;
		
		/** 播放的音乐文件 */
		public var _file:File;
		
		/** 播放列表 */
		public var _musicList:ArrayCollection = new ArrayCollection();
		
		/** 播放文件信息 */
		public var _musicInfoList:ArrayCollection = new ArrayCollection();	
			
		/** 播放序号 */
		public var _playIndex:int = 0;		
		
		/** 缓存 */
		public var _buffer:SoundLoaderContext = new SoundLoaderContext(5000);	
			
		/** 播放歌曲标签 */
		public var _songName:String = "未播放";		
		
		/** 播放状态  */
		public var _playing:Boolean = false;	
			
		/** 播放位置  */
		public var _position:int;		
		
		/** 播放进度条标签 */
		public var _progressBarLabel:String = "00:00:00 / 00:00:00";
		
		/** 播放进度条定时器 */
		public var _timer:Timer = new Timer(20);
		
		/** 音量控制器 */
		public var _transform:SoundTransform = new SoundTransform(0.8, 0);
		
		/** 播放列表ID */
		public var _playListId:String;
		
		/** 是否保存播放状态. Default true */
		public var _savePlayingState:Boolean=true;
		
		/** 播放顺序. Default order(random:随机, order:顺序) */
		public var _playMode:String = "order";
		
		/** 播放循环. Default list(no:不循环到播放列表底部就停止播放, one:单曲循环, list:循环列表, all:列表播放完后继续播放下一个列表) */
		public var _playCyc:String = "list";
		
		/**音量 */
		public var _volume:Number;
		
		
		/** 播放列表集合 */
		public var _musicLists:ArrayCollection = new ArrayCollection();		
		
		
		//静态实例
		private static var _instance:ModelLocator;
		public static function getInstance():ModelLocator{
			if(_instance == null){
				_instance = new ModelLocator();
			}
			return _instance;
		}
	}
}